
Rajinder Singh
Deep Learning Researcher

इस गाइड ने एमेजॉन वेब एप्लिकेशन फ़ायरवॉल (AWS WAF) कैप्चा और चुनौती पृष्ठों को बायपास करने के लिए PHP और CapSolver API के बारे में व्यापक, चरण-दर-चरण गाइड प्रदान करता है। हम एमएस वीएफ द्वारा उत्पन्न कैप्चा (HTTP 405) और चुनौती (HTTP 202) प्रतिक्रियाओं की लॉजिक के बारे में विस्तार से विवरण प्रदान करते हैं, आवश्यक पैरामीटर निकालते हैं, और अंततः प्राप्त किए गए aws-waf-token कुकी का उपयोग सुरक्षित संसाधन तक पहुंच के लिए करते हैं।
एमएस वीएफ कैप्चा के बारे में जानकारी लेने के लिए इस विस्तृत गाइड में आपका स्वागत है। वेब बट्स और वेब स्क्रैपर के लिए, कैप्चा के सामना करना एक महत्वपूर्ण बाधा हो सकती है, लेकिन सही साधनों के साथ यह एक प्रबल विवेक के साथ निपटाया जा सकता है।
एमएस वीएफ (वेब एप्लिकेशन फ़ायरवॉल) एक सुरक्षा सेवा है जो वेब एप्लिकेशन की बुनियादी वेब हमलों से रक्षा करती है। यह एक वास्तविक मानव उपयोगकर्ता से आये अनुरोध की पुष्टि करने के लिए दो प्राथमिक कार्रवाई के लिए प्रदान करती है: कैप्चा और चुनौती।
| कार्य | उद्देश्य | HTTP स्थिति कोड | आवश्यक समाधान |
|---|---|---|---|
| चुनौती | क्लाइंट सत्र के मानक ब्राउज़र होने की पुष्टि करने के लिए एक चुप्पी बैकग्राउंड जांच चलाता है। | 202 स्वीकृत |
टोकन प्राप्त करने के लिए जावास्क्रिप्ट चुनौती हल करना आवश्यक है। |
| कैप्चा | अंत उपयोगकर्ता को एक दृश्य पहेली हल करने के लिए मजबूर करता है ताकि वे मानव होने की पुष्टि कर सकें। | 405 विधि अनुमति नहीं है |
एक विशिष्ट पैरामीटर के निकालने की आवश्यकता होती है। |
जब भी कैप्चा या चुनौती सफलतापूर्वक हल कर ली जाती है, एमएस वीएफ एक वैध टोकन जारी करता है, जो aws-waf-token कुकी के मान के रूप में वापस आता है। इस टोकन को सुरक्षित संसाधन तक पहुंच के लिए अगले अनुरोध में शामिल करना आवश्यक है।
CapSolver एमएस वीएफ कैप्चा और चुनौती के लिए एक शक्तिशाली API समाधान प्रदान करता है। इस गाइड में हम PHP के cURL लाइब्रेरी का उपयोग करके आवश्यक लॉजिक के लागू करने पर केंद्रित हैं।
हमारे समाधान का केंद्र दो मुख्य API कॉल हैं: CapSolver के लिए createTask कैप्चा / चुनौती जमा करने के लिए और getTaskResult समाधान प्राप्त करने के लिए।
<?php
// --- विनिर्देश ---
$PROXY = "http://username:password@host:port"; // वैकल्पिक: अपने प्रॉक्सी विवरण से बदलें (जैसे, AntiAwsWafTask के लिए)
$PAGE_URL = "https://norway-meetup.aws.wslab.no/"; // एमएस वीएफ द्वारा सुरक्षित लक्ष्य URL से बदलें
$CLIENT_KEY = "आपकी भुगतान-प्रति-उपयोग"; // अपने CAPSOLVER API कुंजी से बदलें
/**
* CapSolver API पर एक कार्य प्रस्तुत करता है।
* @param array $payload कार्य भेजने के लिए आवश्यक पैरामीटर वाला पेलोड।
* @return array API प्रतिक्रिया, टास्कआईडी सहित।
*/
function createTask($payload) {
global $CLIENT_KEY;
$ch = curl_init();
echo("कार्य बना रहे हैं...\n");
curl_setopt($ch, CURLOPT_URL, 'https://api.capsolver.com/createTask');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['clientKey' => $CLIENT_KEY, 'task' => $payload]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
/**
* CapSolver API पर कार्य परिणाम के लिए जांच करता है।
* @param string $taskId जांच करने के लिए कार्य का ID।
* @return array API प्रतिक्रिया जिसमें समाधान शामिल है।
*/
function getTaskResult($taskId) {
global $CLIENT_KEY;
do {
echo("समाधान की प्रतीक्षा कर रहे हैं...\n");
sleep(1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.capsolver.com/getTaskResult');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['clientKey' => $CLIENT_KEY, 'taskId' => $taskId]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if (isset($data['status']) && $data['status'] == "ready") {
return $data;
}
// getTaskResult से त्रुटि के संभावित त्रुटि का निपटारा करें
if (isset($data['errorId']) && $data['errorId'] != 0) {
echo("कार्य परिणाम प्राप्त करते समय त्रुटि: " . $data['errorDescription'] . "\n");
return null;
}
} while(true);
}
/**
* उपयुक्त कार्य प्रकार के साथ एमएस वीएफ चुनौती या कैप्चा हल करता है।
* @param string $taskType CapSolver कार्य प्रकार (AntiAwsWafTask या AwsCaptchaTask)।
* @param array $params कार्य के लिए आवश्यक पैरामीटर।
* @return string|null एमएस-वाफ-टोकन कुकी मान या असफलता पर null।
*/
function solveAwsWaf($taskType, $params) {
global $PAGE_URL, $PROXY;
$payload = [
'type' => $taskType,
'websiteURL' => $PAGE_URL,
'proxy' => $PROXY,
];
// कार्य के लिए विशिष्ट पैरामीटर मिश्रित करें
$payload = array_merge($payload, $params);
// एक साफ अनुरोध के लिए खाली मानों को साफ करें
$payload = array_filter($payload, function($value) {
return $value !== "" && $value !== null;
});
$taskData = createTask($payload);
if (isset($taskData['taskId'])) {
$result = getTaskResult($taskData['taskId']);
if ($result && isset($result['solution']['cookie'])) {
return $result['solution']['cookie'];
}
}
return null;
}
मुख्य लॉजिक एमएस वीएफ द्वारा सुरक्षित पृष्ठ पर एक प्रारंभिक अनुरोध करना और HTTP स्थिति कोड की जांच करना है ताकि यह निर्धारित किया जा सके कि चुनौती (202) या कैप्चा (405) आवश्यक है। फिर हम नियमित अभिव्यक्ति का उपयोग एचटीएमएल प्रतिक्रिया बॉडी से आवश्यक पैरामीटर निकालते हैं।
// --- मुख्य निष्पादन लॉजिक ---
// 1. सुरक्षित पृष्ठ पर प्रारंभिक अनुरोध
$ch = curl_init($PAGE_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$cookie = null;
echo("प्रारंभिक HTTP कोड: " . $httpCode . "\n");
if ($httpCode == 202) {
// --- चुनौती (202) संभालें ---
echo("चुनौती पहचानी गई (HTTP 202). पैरामीटर निकाल रहे हैं...\n");
// चुनौती.js URL निकालें
preg_match('/<script src="([^"]*token.awswaf.com[^"]*)"/', $response, $matches);
$awsChallengeJS = $matches[1] ?? null;
if ($awsChallengeJS) {
$params = ['awsChallengeJS' => $awsChallengeJS];
$cookie = solveAwsWaf("AntiAwsWafTask", $params);
} else {
echo("त्रुटि: चुनौती के लिए awsChallengeJS नहीं मिला।\n");
}
} elseif ($httpCode == 405) {
// --- कैप्चा (405) संभालें ---
echo("कैप्चा पहचानी गई (HTTP 405). पैरामीटर निकाल रहे हैं...\n");
// पृष्ठ के सामग्री से पैरामीटर निकालें
preg_match('/<script src="([^"]*token.awswaf.com[^"]*)"/', $response, $matches);
$awsChallengeJS = $matches[1] ?? null;
preg_match('/"key":"(.*?)"/', $response, $matches);
$awsKey = $matches[1] ?? null;
preg_match('/"iv":"(.*?)"/', $response, $matches);
$awsIv = $matches[1] ?? null;
preg_match('/"context":"(.*?)"/', $response, $matches);
$awsContext = $matches[1] ?? null;
if ($awsKey && $awsIv && $awsContext) {
$params = [
'awsKey' => $awsKey,
'awsIv' => $awsIv,
'awsContext' => $awsContext,
'awsChallengeJS' => $awsChallengeJS // वैकल्पिक लेकिन सिफारिश की जाती है
];
// ध्यान दें: दृश्य कैप्चा के लिए कार्य प्रकार अक्सर अभी भी AntiAwsWafTask होता है,
// लेकिन आवश्यक पैरामीटर जो CapSolver के पक्ष में समाधान प्रकार निर्धारित करते हैं।
$cookie = solveAwsWaf("AntiAwsWafTask", $params);
} else {
echo("त्रुटि: कैप्चा के लिए कुंजी, आईवी या संदर्भ पैरामीटर नहीं मिले।\n");
}
}
// 3. टोकन का उपयोग सुरक्षित संसाधन तक पहुंच के लिए करें
if ($cookie) {
echo("सफलतापूर्वक एमएस-वाफ-टोकन प्राप्त किया गया। अंतिम अनुरोध कर रहे हैं...\n");
$ch = curl_init($PAGE_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// एमएस-वाफ-टोकन कुकी सेट करें
curl_setopt($ch, CURLOPT_COOKIE, "aws-waf-token=" . $cookie);
$finalResponse = curl_exec($ch);
curl_close($ch);
echo "\n--- अंतिम पृष्ठ की सामग्री ---\n";
echo $finalResponse;
echo "\n--------------------------\n";
} else {
echo("एमएस वीएफ चुनौती/कैप्चा हल नहीं हो सका।\n");
}
?>
मूल कोड में अलग-अलग कार्यों (solveAwsChallenge, solveAwsCaptcha) और थोड़ा असंगत पैरामीटर नाम (key, iv, context के बजाय awsKey, awsIv, awsContext) का उपयोग किया गया था। अपनाए गए कोड एकल solveAwsWaf कार्य में समायोजित करता है, जो नवीनतम CapSolver API दस्तावेज़ के साथ संगत है। इस दृष्टिकोण अधिक अनुकूलित है और बनाए रखने में आसान है।
इस लॉजिक वेब स्क्रैपिंग और ऑटोमेशन कार्यों के लिए बहुत प्रभावी है। अन्य भाषाओं में काम करने वाले लोगों के लिए, CapSolver के पास एक अनुदेश भी है जैसे कि "एमएस वीएफ कैप्चा / चुनौती को पायथन के साथ हल करें" [https://www.capsolver.com/blog/how-to-solve-aws-captcha-challenge-with-python] जो एक समान API पैटर्न का अनुसरण करता है।
एमएस वीएफ की चुनौती और कैप्चा यांत्रिकी बॉट के खिलाफ एक प्रभावी उपाय हैं, लेकिन वे अनुकूलित नहीं हैं। PHP में एक शक्तिशाली पहचान और हल करने की लॉजिक के साथ, CapSolver API के शक्ति का उपयोग करके वेब स्क्रैपिंग या ऑटोमेशन कार्यक्रमों के बिना किसी भी बाधा के लगातार आगे बढ़ने के लिए आवश्यक aws-waf-token प्राप्त करने में विकासकर्ता सक्षम हो सकते हैं। मुख्य बात एमएस वीएफ कार्य को HTTP स्थिति कोड के माध्यम से सही ढंग से पहचानना और पृष्ठ स्रोत से आवश्यक पैरामीटर को सही ढंग से निकालना है।
aws-waf-token कुकी मान प्राप्त करना है।AntiAwsWafTask कार्य प्रकार चुनौती और कैप्चा हल करता है, आवश्यक पैरामीटर समाधान के विशिष्ट प्रकार निर्धारित करते हैं।preg_match के माध्यम से पृष्ठ स्रोत से डायनामिक पैरामीटर जैसे awsChallengeJS, awsKey, awsIv और awsContext निकालने के लिए आवश्यक है।A: HTTP स्थिति कोड एमएस वीएफ कार्य के प्रकार के लिए सबसे विश्वसनीय संकेतक है। 202 स्वीकृत स्थिति कोड चुप्पी चुनौती के सक्रिय होने की पुष्टि करता है, जिसमें कम पैरामीटर की आवश्यकता होती है। 405 विधि अनुमति नहीं है स्थिति कोड एक दृश्य कैप्चा के सक्रिय होने की पुष्टि करता है, जिसमें विशिष्ट पैरामीटर (key, iv, context) की आवश्यकता होती है जो पृष्ठ के जावास्क्रिप्ट चर में निर्मित होते हैं।
AntiAwsWafTask और AntiAwsWafTaskProxyLess के बीच क्या अंतर है?A: दोनों कार्य प्रकार एमएस वीएफ चुनौती के हल करने के लिए डिज़ाइन किए गए हैं। मुख्य अंतर प्रॉक्सी की आवश्यकता है। AntiAwsWafTask में आपको अपने प्रॉक्सी के बारे में अपने अनुरोध पैलोड में प्रदान करना आवश्यक है। AntiAwsWafTaskProxyLess के लिए प्रॉक्सी की आवश्यकता नहीं है, क्योंकि CapSolver आंतरिक रूप से प्रॉक्सी का उपयोग करता है। बड़े पैमाने पर वेब स्क्रैपिंग के लिए प्रॉक्सी का उपयोग करना आमतौर पर सुझाव दिया जाता है ताकि अनन्यता बनी रहे और आईपी बैन से बचा जा सके।
key, iv या context पैरामीटर नहीं ढूंढ पा रहा है। मैं क्या करूं?A: ये पैरामीटर डायनामिक रूप से बनाए जाते हैं और आमतौर पर एचटीएमएल स्रोत में <script> टैग या छिपे इनपुट फ़ील्ड में एम्बेड किए जाते हैं। अगर आपका preg_match विफल हो जाता है, तो यह संभवतः लक्ष्य वेबसाइट के WAF विवरण में परिवर्तन के कारण हो सकता है। आपको ब्लॉक किए गए पृष्ठ के नवीनतम HTML स्रोत की जांच करनी चाहिए और अपने नियमित अभिव्यक्ति को अपडेट करना चाहिए।
A: एमएस वीएफ चुनौती को हाथ से हल करना अत्यधिक कठिन और ऑटोमेशन के लिए अव्यावहारिक है। चुनौती कार्य के लिए जटिल, ओब्फस्किटेड जावास्क्रिप्ट चलाना आवश्यक है, और कैप्चा कार्य के लिए छवि स्वीकृति पहेली हल करना आवश्यक है। तीसरे पक्ष सेवाएं जैसे कि CapSolver वास्तविक समय में इन चुनौतियों को हल करने के लिए उन्नत AI और बड़े पैमाने के बुनियादी ढांचा का उपयोग करता है, जो ऑटोमेशन के लिए संभव बनाता है। प्रत्येक कैप्चा के लिए अपना सॉल्वर बनाना आमतौर पर लागत-कुशल या विश्वसनीय नहीं होता।
aws-waf-token कितने समय के लिए वैध है?A: aws-waf-token की वैधता एमएस वीएफ द्वारा सुरक्षित वेबसाइट के विन्यास द्वारा निर्धारित की जाती है, लेकिन आमतौर पर 10-30 मिनट के लिए होती है। जब टोकन समाप्त हो जाता है, आपको नए टोकन प्राप्त करने के लिए अनुरोध करना, पहचान करना और कार्य सबमिट करना आवश्यक होता है।
कैपसॉल्वर के साथ वेब स्क्रैपिंग में AWS WAF कैप्चा हल करें। कार्यकुशलता में वृद्धि करें, चुनौतियां हल करें और डेटा के सुचारू रूप से प्रवाह करें।

एक प्रायोगिक गाइड जो पायथन और कैपसॉल्वर के उपयोग से एवीएस डब्ल्यूएफ चुनौतियों के साथ निपटने में सक्षम करता है
